/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CapaLogica;

import java.util.ArrayList;
import java.util.Date;
import java.util.TreeMap;

/**
 *
 * @author Elayner
 */
public class Gestor {
    
    public boolean resgistrarAutor(String codigo, String nombre, String apellido, String direcion, String email, String nacionalidad, String paisOrigen) throws Exception{
        Autor objAutor= new MultiAutor().crear(codigo, nombre, apellido, direcion, email, nacionalidad, paisOrigen);
        return objAutor!=null;
    }
    
    public boolean registrarLibro(int isbn, String titulo, int volumen, String editorial, Date fechaPublicacion, String tipo, String codAutor, String codDescriptor){
      Libro objLibro=new Libro(isbn, titulo, volumen, editorial, fechaPublicacion, tipo, codAutor, codDescriptor);
      return objLibro!=null;
    }
    
    public boolean registrarDescriptor(String codigo, String descripcion) throws Exception{
        Descriptor objDescrip=new MultiDescriptor().crear(codigo, descripcion);
        return objDescrip!=null;
    }
    
    public boolean registarEjemplar(String codigo, String estado, Date fechaIngreso, String condicion,int isbn) throws Exception{
        Ejemplar objEjemplar=new MultiEjemplar().crear(codigo, estado, fechaIngreso, condicion, isbn);
        if(objEjemplar!=null){
            objEjemplar.registrarMoviHisto("Registro");
        }
        return objEjemplar!=null;   
    }
    
    public boolean registrarUsuario(String identificacion, String nombre, String apellido, String direccion, String email, Integer telefono,boolean estado){
        Usuario objUsuario=new Usuario(identificacion, nombre, apellido, direccion, email, telefono, estado);
        return objUsuario!=null;
    }
    
    public boolean resgistrarPrestamo(int diasPrestamo, Date fechaPrestamo, String codEjemplar, String codUsuario) throws Exception{        
        ArrayList<Prestamo> listaPrestamos = new MultiPrestamo().buscarPrestamosPorUsuario(codUsuario);
        Prestamo objPrestamo=null;
        boolean morosidad = false;
        for(int i = 1;i>listaPrestamos.size()&&morosidad==false;i++){
            if(listaPrestamos.get(i).isIndMorosidad()==true)
                morosidad=true;
        }
        if(!morosidad)
        objPrestamo=new Prestamo(diasPrestamo, fechaPrestamo, codEjemplar, codUsuario);
        return objPrestamo!=null;
    }
    
    public ArrayList<TreeMap> listarAutores() throws Exception{
        Autor objAutor;
        ArrayList<Autor> listaAutores = new MultiAutor().buscarAutoresPorNombre("");
        ArrayList<TreeMap> listadoDeAutores  = new ArrayList<>();
        for(int i = 0, j=1; i < listaAutores.size();i++, j++){
            objAutor = listaAutores.get(i);
            TreeMap datos = new TreeMap();
            datos.put("codigo", objAutor.getCodigo());
            datos.put("nombre", objAutor.getNombre());
            listadoDeAutores.add(datos);
        }
        return listadoDeAutores;
    }
    
    public ArrayList<TreeMap> listarDescriptores() throws Exception{
        Descriptor objDescriptor;
        ArrayList<Descriptor> listaDescriptores = new MultiDescriptor().buscarDescriptoresPorDescriptor("");
        ArrayList<TreeMap> listadoDeLibros  = new ArrayList<>();
        for(int i = 0, j=1; i < listaDescriptores.size();i++, j++){
            objDescriptor = listaDescriptores.get(i);
            TreeMap datos = new TreeMap();
            datos.put("codigo", objDescriptor.getCodigo());
            datos.put("nombre", objDescriptor.getDescripcion());
            listadoDeLibros.add(datos);
        }
        return listadoDeLibros;
    }
    
    
    public ArrayList<TreeMap> listarLibros() throws Exception{
        Libro objLibro;
        ArrayList<Libro> listaLibros = new MultiLibro().buscarLibros(0,"","","","");
        ArrayList<TreeMap> listadoDeLibros  = new ArrayList<>();
        for(int i = 0, j=1; i < listaLibros.size();i++, j++){
            objLibro = listaLibros.get(i);
            TreeMap datos = new TreeMap();
            datos.put("codAutor", objLibro.getCodAutor());
            datos.put("codDescriptor", objLibro.getCodDescriptor());
            datos.put("editorial", objLibro.getEditorial());
            datos.put("fechaPubli", objLibro.getFechaPublicacion());
            datos.put("isbn", objLibro.getIsbn());
            datos.put("tipo", objLibro.getTipo());
            datos.put("titulo", objLibro.getTitulo());
            datos.put("volumen", objLibro.getVolumen());            
            listadoDeLibros.add(datos);
        }
        return listadoDeLibros;
    }
    
    public ArrayList<TreeMap> listarEjemplares(int pisbn) throws Exception{
        Ejemplar objEjemplar;
        ArrayList<Ejemplar> listaEjemplares = new MultiEjemplar().buscarEjemplarPorLibro(pisbn);
        ArrayList<TreeMap> listadoDeEjemplares  =new ArrayList<>();
        for(int i = 0, j=1; i < listaEjemplares.size();i++, j++){
            objEjemplar = listaEjemplares.get(i);
            TreeMap datos = new TreeMap();
            datos.put("", objEjemplar.getCodigo());
            datos.put("", objEjemplar.getCondicion());
            datos.put("", objEjemplar.getEstado());
            datos.put("", objEjemplar.getFechaIngreso());
            datos.put("", objEjemplar.getIsbn());
            datos.put("", objEjemplar.getLibro());            
            listadoDeEjemplares.add(datos);
        }
        return listadoDeEjemplares;
    }
    
    
}
